// 控制应用生命周期和创建原生浏览器窗口的模组
const { app, BrowserWindow } = require('electron')
const path = require('path')

const child_process = require('child_process');
const child_process_list = []
function killChildProcess(){
    child_process_list.map(ps => ps.kill())
}


const NODE_ENV = process.env.NODE_ENV

function createWindow() {
    // 创建浏览器窗口
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        // frame: true,
        webPreferences: {
            preload: path.join(__dirname, 'preload.js')
        }
    })
    // mainWindow.menuBarVisible = true
    mainWindow.on('close', ()=>{
        killChildProcess()
        // alert("关闭够")
        app.exit()
    })
    window.onbeforeunload = (e) => {
        killChildProcess()
        console.log('I do not want to be closed')
        // alert("关闭啊卧槽")
        // 与通常的浏览器不同,会提示给用户一个消息框,
        //返回非空值将默认取消关闭
        //建议使用对话框 API 让用户确认关闭应用程序.
        app.exit()
        e.returnValue = false
    }



    // 加载 index.html
    // mainWindow.loadFile('dist/index.html') 将该行改为下面这一行，加载url
    mainWindow.loadURL(
        NODE_ENV === 'development'
            ? 'http://localhost:3000'
            : `file://${path.join(__dirname, '../dist/index.html')}`
    );

    // mainWindow.loadFile('../dist/index.html')

    // 打开开发工具
    if (NODE_ENV === "development") {
        mainWindow.webContents.openDevTools()
    }

}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
// 部分 API 在 ready 事件触发后才能使用。
app.whenReady().then(() => {
    createWindow()

    let app_path = path.join(process.cwd(), 'resources/app');
    console.log(`app_path: ${app_path}`)
    child_process_list.push(
        child_process.spawn(path.join(app_path, 'vs-proxy.exe'))
    ) //启动proxy

    app.on('activate', function () {
        // 通常在 macOS 上，当点击 dock 中的应用程序图标时，如果没有其他
        // 打开的窗口，那么程序会重新创建一个窗口。
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序。 因此，通常对程序和它们在
// 任务栏上的图标来说，应当保持活跃状态，直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {
    
    if (process.platform !== 'darwin') app.quit()
})

// 在这个文件中，你可以包含应用程序剩余的所有部分的代码，
// 也可以拆分成几个文件，然后用 require 导入。